package sohsite.pelada.servlets;

import java.io.IOException;
import java.util.Collection;
import java.util.HashSet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import sohsite.excecao.EntradaInexistenteException;
import sohsite.excecao.MensagensJSP;
import sohsite.fachada.SistemaSohSite;
import sohsite.pelada.jogo.Jogo;
import sohsite.pelada.pelada.Pelada;
import sohsite.pelada.peladeiro.Peladeiro;
import sohsite.usuario.Usuario;

public class ServletInserirPelada extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void doPost (HttpServletRequest req,
			HttpServletResponse res)
	throws ServletException, IOException
	{
		SistemaSohSite sohSite = SistemaSohSite.getInstancia();

		String url = req.getParameter("url");
		String nome = req.getParameter("nome")!= null ? req.getParameter("nome"):"";
		String mod1 = req.getParameter("mod1")!= null ? req.getParameter("mod1"):"";
		String mod2 = req.getParameter("mod2")!= null ? req.getParameter("mod2"):"";
		String mod3 = req.getParameter("mod3")!= null ? req.getParameter("mod3"):"";

		if ((mod1.equals("") && mod2.equals("") && mod3.equals("")) || nome.equals("")){
			res.sendRedirect("./jsp/mensagem.jsp"+ "?idMensagem=" + MensagensJSP.CampoInvalido);
			return;
		}
		
		Collection<Usuario> usuarios = null;
		Usuario usuario1=null, usuario2=null, usuario3 = null;
		
		try{
			usuarios = new HashSet<Usuario>();
			if(!mod1.equals("")){
				usuario1 = sohSite.getControladorUsuario().consultarUsuario(Integer.parseInt(mod1));
				usuarios.add(usuario1);
			}
			if(!mod2.equals("")){
				usuario2 = sohSite.getControladorUsuario().consultarUsuario(Integer.parseInt(mod2));
				usuarios.add(usuario2);
			}
			if(!mod3.equals("")){
				usuario3 = sohSite.getControladorUsuario().consultarUsuario(Integer.parseInt(mod3));
				usuarios.add(usuario3);
			}

		}catch(EntradaInexistenteException e){
			res.sendRedirect("./jsp/mensagem.jsp"+ "?idMensagem=" + MensagensJSP.UsuarioInexistente);
			return;
		}
		
		Pelada pelada = new Pelada(nome,new HashSet<Jogo>(),new HashSet<Peladeiro>(),usuarios);		
		sohSite.getControladorPelada().inserirPelada(pelada);
		
		if(usuario1!=null){
			if(usuario1.getPeladas()==null)
				usuario1.setPeladas(new HashSet<Pelada>());
			
			usuario1.getPeladas().add(pelada);
			sohSite.getControladorUsuario().atualizarUsuario(usuario1);
		}else if(usuario2!=null){
			if(usuario2.getPeladas()==null)
				usuario2.setPeladas(new HashSet<Pelada>());			
			
			usuario2.getPeladas().add(pelada);
			sohSite.getControladorUsuario().atualizarUsuario(usuario2);
		}else if(usuario3!=null){
			if(usuario3.getPeladas()==null)
				usuario3.setPeladas(new HashSet<Pelada>());			
			
			usuario2.getPeladas().add(pelada);
			sohSite.getControladorUsuario().atualizarUsuario(usuario3);
		}
		
		res.sendRedirect(url);
	}

}